Systems for online analytical processing (OLAP) need to handle growing volumes of critical data and in the same time to meet challenging user requirements for fast response time and flexible support for complex or ad hoc queries on application data. Typically, the OLAP systems hold and process data in the main memory, which enables fast queries to be executed over large volumes of structured data. The data can be compressed in the main memory to eliminate the runtime cost of disk access and the structures may be optimized for sequential read. Further, the data may be indexed and stored in a persistence layer of the OLAP system. The persistence layer may provide storage of application data on local hard disks in a system network. However, storing data on local hard disks in a network requires implementing high availability and failover techniques, such as replication of the data, so that the data is not lost.
Replication ensures consistency between redundant resources, such as software or hardware components, improves reliability, fault-tolerance, or accessibility. The replication may be data replication if the same data is stored on multiple storage devices. The replication process should be transparent to an external user. Also, in a failover scenario, a failover of replicas should be hidden as much as possible. When data is replicated, the processes of handling incoming requests reply to read requests, and apply updates. By ensuring that the replicas see the same events in equivalent orders, they stay in consistent states and thus any replica can respond to queries. Besides consistency of replicas, the server nodes in a distributed system should be evenly loaded with replicas so that optimal application performance and network traffic is achieved.